package seismosurfer.data;

import java.io.Serializable;

/**
 * A Data Transfer Object that corresponds to the <code>MACRO_VIEW</code> view. It
 * contains data from the <code>MACROSEISMIC</code>, <code>SITE</code>,
 * <code>CATALOG</code> and <code>COUNTRY</code> tables.
 */
public class MacroData implements Serializable {
    
    private static final long serialVersionUID = -3895081430541054704L;

    private String catalogName = "";

    private float azimuth = 0;

    private float distance = 0;

    private float hypocenterDistance = 0;

    private float intensity = 0;

    private String intensityChar = "";

    private long macroseismicID = 0;

    private String siteNameGR = "";

    private String siteNameEN = "";

    private String siteNameGRKapod = "";

    private String prefectureGR = "";

    private String prefectureEN = "";

    private int population = 0;

    private float siteLatitude = 0;

    private float siteLongitude = 0;

    private String countryName = "";

    /**
     * Default constructor.
     */
    public MacroData() {

    }

    /**
     * Gets the catalog name from which these data came from.
     * 
     * @return a string with the catalog name.
     */
    public String getCatalogName() {
        return catalogName;
    }

    /**
     * Gets the site latitude. The macroseismic observations are related to this
     * site.
     * 
     * @return the site`s latitude
     */
    public float getSiteLatitude() {
        return siteLatitude;
    }

    /**
     * Gets the site longitude. The macroseismic observations are related to
     * this site.
     * 
     * @return the site` longitude
     */
    public float getSiteLongitude() {
        return siteLongitude;
    }

    /**
     * Gets azimuth.
     * 
     * @return azimuth
     */
    public float getAzimuth() {
        return azimuth;
    }

    /**
     * Gets country name. The country related with these macroseismic
     * observations.
     * 
     * @return the country name
     */
    public String getCountryName() {
        return countryName;
    }

    /**
     * Gets the distance between the earthquake epicenter and the site where the
     * macroseismic observations were taken.
     * 
     * @return the distance between epicenter and site
     */
    public float getDistance() {
        return distance;
    }

    /**
     * Gets the distance between the earthquake hypocenter and the site where
     * the macroseismic observations were taken.
     * 
     * @return the distance between hypocenter and site
     */
    public float getHypocenterDistance() {
        return hypocenterDistance;
    }

    /**
     * Gets the intensity felt at this site after an earthquake as a number.
     * 
     * @return the intensity felt as a number
     */
    public float getIntensity() {
        return intensity;
    }

    /**
     * Gets the intensity felt at this site after an earthquake as a string.
     * 
     * @return the intensity felt as a string
     */
    public String getIntensityChar() {
        return intensityChar;
    }

    /**
     * Gets this macroseismic observation ID.
     * 
     * @return macroseismic observation ID
     */
    public long getMacroseismicID() {
        return macroseismicID;
    }

    /**
     * Gets this site`s name in English.
     * 
     * @return this site`s name in Enlish
     */
    public String getSiteNameEN() {
        return siteNameEN;
    }

    /**
     * Gets this site`s name in Greek.
     * 
     * @return this site`s name in Greek
     */
    public String getSiteNameGR() {
        return siteNameGR;
    }

    /**
     * Gets this site`s name in Greek according to the Kapodistria law.
     * 
     * @return the site name in Greek according to the Kapodistria law.
     */
    public String getSiteNameGRKapod() {
        return siteNameGRKapod;
    }

    /**
     * Gets this site population.
     * 
     * @return site population
     */
    public int getPopulation() {
        return population;
    }

    /**
     * Gets the prefecture where this site belongs in English.
     * 
     * @return prefecture name in English
     */
    public String getPrefectureEN() {
        return prefectureEN;
    }

    /**
     * Gets the prefecture where this site belongs in Greek.
     * 
     * @return prefecture name in Greek
     */
    public String getPrefectureGR() {
        return prefectureGR;
    }

    // __________________________________________________________________________//

    /**
     * Sets azimuth.
     * 
     * @param azimuth
     *            a number with the azimuth value
     */
    public void setAzimuth(float azimuth) {
        this.azimuth = azimuth;
    }

    /**
     * Sets country name.
     * 
     * @param country_name
     *            a string with the country name
     */
    public void setCountryName(String country_name) {
        this.countryName = country_name;
    }

    /**
     * Sets the distance between epicenter and site.
     * 
     * @param distance
     *            a number with the distance between site and epicenter
     */
    public void setDistance(float distance) {
        this.distance = distance;

    }

    /**
     * Sets the distance between hypocenter and site.
     * 
     * @param hypdist
     *            a number with the distance between site and hypocenter
     */
    public void setHypocenterDistance(float hypdist) {
        this.hypocenterDistance = hypdist;
    }

    /**
     * Sets the intensity felt at this site.
     * 
     * @param intensity
     *            a number with the intensity felt at this site
     */
    public void setIntensity(float intensity) {
        this.intensity = intensity;
    }

    /**
     * Sets the intensity felt at this site.
     * 
     * @param intensity_c
     *            a string with the intensity felt at this site
     */
    public void setIntensityChar(String intensity_c) {
        this.intensityChar = intensity_c;
    }

    /**
     * Sets this macroseismic observation ID.
     * 
     * @param macroID
     *            macroseismic observation ID
     */
    public void setMacroseismicID(long macroID) {
        this.macroseismicID = macroID;

    }

    /**
     * Sets the population of this site.
     * 
     * @param population
     *            the population of this site
     */
    public void setPopulation(int population) {
        this.population = population;
    }

    /**
     * Sets the prefecture where this site belongs in English.
     * 
     * @param prefecture_en
     *            prefecture name in English
     */
    public void setPrefectureEN(String prefecture_en) {

        this.prefectureEN = prefecture_en;

    }

    /**
     * Sets the prefecture where this site belongs in Greek.
     * 
     * @param prefecture_gr
     *            prefecture name in Greek
     */
    public void setPrefectureGR(String prefecture_gr) {
        this.prefectureGR = prefecture_gr;
    }

    /**
     * Sets the site latitude. The macroseismic observations are related to this
     * site.
     * 
     * @param lat
     *            the site`s latitude
     */
    public void setSiteLatitude(float lat) {
        this.siteLatitude = lat;
    }

    /**
     * Sets the site longitude. The macroseismic observations are related to
     * this site.
     * 
     * @param lon
     *            the site`s longitude
     */
    public void setSiteLongitude(float lon) {
        this.siteLongitude = lon;
    }

    /**
     * Sets this site`s name in English.
     * 
     * @param name_en
     *            this site`s name in English
     */
    public void setSiteNameEN(String name_en) {
        this.siteNameEN = name_en;
    }

    /**
     * Sets this site`s name in Greek.
     * 
     * @param name_gr
     *            this site`s name in Greek
     */
    public void setSiteNameGR(String name_gr) {
        this.siteNameGR = name_gr;
    }

    /**
     * Sets this site`s name in Greek according to the Kapodistria law.
     * 
     * @param name_gr_kapod
     *            the site name in Greek according to the Kapodistria law.
     */
    public void setSiteNameGRKapod(String name_gr_kapod) {
        this.siteNameGRKapod = name_gr_kapod;
    }

    /**
     * Sets the catalog name from where these data came from.
     * 
     * @param catalogName
     *            the catalog name from where these data came from
     */
    public void setCatalogName(String catalogName) {
        this.catalogName = catalogName;
    }

}
